package com.bdqn.t313.jdkdynamicproxy;

import java.lang.reflect.Proxy;

/**
 * 工厂方法生成代理对象
 */
public class IntermediaryJdkProxyFactory {

    public static <T> T create(Object target){

        EnglishTeacherDao englishTeacherDao = new EnglishTeacherDao(target);

        //动态创建代理对象
        //ClassLoader loader：指定当前目标对象使用的类加载器，获取加载器的方法
        //Class<?>[] interfaces：目标对象实现的接口类型，使用泛型方法确认类型
        //InvocationHandler h：事情处理，执行目标对象的方法时，会触发事情处理器方法
        return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),englishTeacherDao);
    }
}
